//
// Created by hjie on 23-6-24.
//

#pragma once

#include <string>
#include <memory>
#include <functional>
#include <map>
#include <set>
#include <vector>

class ConnectionDataRoom;
class UserData;
class SdpData;
class UserAssociation;

class UserAssociationManager;
class UserDataManager;

class DataManager
{
public:
    DataManager(ConnectionDataRoom * room);
    ~DataManager();
    // clear all data
    void ClearAllData(const std::string & user_id);
public:
    ConnectionDataRoom * m_room;
public:
    std::map<std::string, std::shared_ptr<UserAssociation>> m_association_map;
public:
    std::shared_ptr<UserAssociationManager> m_ua_mgr;
    std::shared_ptr<UserDataManager>        m_ud_mgr;
};
